MDEV-39082 mysql-test: use vardir as datadir in collect_mysqld_features
authorAquila Macedo <aquilamacedo@riseup.net>
Mon, 16 Mar 2026 04:09:29 +0000 (01:09 -0300)
committerOtto Kekäläinen <otto@debian.org>
Thu, 19 Mar 2026 13:13:13 +0000 (13:13 +0000)
collect_mysqld_features probes mariadbd with --datadir=., which can
point to the installed mysql-test tree.

During this probe, mariadbd may run the datadir case-sensitivity check
and try to create a *.lower-test file there. This is a bad fit when the
test suite is run from a read-only installed path (e.g. /usr/share/...).

Use $opt_vardir as the datadir for this probe instead, so it runs in a
writable location and avoids writes into the installed test tree.

This upstream change stemmed from discovering during AppArmor testing that the
mariadb-test-run is writing in the /usr/share/.. path:

    apparmor="DENIED" operation="mknod" ... name="/usr/share/mariadb/mariadb-test/mariadb-aa.lower-test" requested_mask="c"

Origin: https://github.com/MariaDB/server/commit/1ecc1d932a0d89d83c7487da6b34717f10a9b7f5.patch
Forwarded: https://github.com/MariaDB/server/pull/4813

Gbp-Pq: Name MDEV-39082-mysql-test-use-vardir-as-datadir-in-collect_my.patch

mysql-test/mariadb-test-run.pl

index 8d88e4d24b841f5a40023b116f5816c69279cbd3..8453ce3ac05c7b6f0890729e0e6bbccdd2e5c274 100755 (executable)
@@ -1798,7 +1798,7 @@ sub collect_mysqld_features {
   my $args;
   mtr_init_args(\$args);
   mtr_add_arg($args, "--no-defaults");
-  mtr_add_arg($args, "--datadir=.");
+  mtr_add_arg($args, "--datadir=%s", $opt_vardir);
   mtr_add_arg($args, "--basedir=%s", $basedir);
   mtr_add_arg($args, "--lc-messages-dir=%s", $path_language);
   mtr_add_arg($args, "--skip-grant-tables");